package util

import (
	"errors"
	"strings"
)

const (
	RedisNil = "redis: nil"
)

// JoinErrors JoinErrors
func JoinErrors(errs []error) string {
	if errs == nil {
		return ""
	}

	if len(errs) == 0 {
		return ""
	}

	errString := ""
	for _, e := range errs {
		errString += e.Error() + "|"
	}

	return errString
}

// ErrosToError ErrosToError
func ErrosToError(errs []error) error {
	if errs == nil {
		return nil
	}

	if len(errs) == 0 {
		return nil
	}

	errString := JoinErrors(errs)
	return errors.New(errString)
}

// IsRedisNilError IsRedisNilError
func IsRedisNilError(err error) bool {
	if err == nil {
		return false
	}

	return strings.Contains(err.Error(), RedisNil)
}

// IsRedisError IsRedisError
func IsRedisError(err error) bool {
	return err != nil && !IsRedisNilError(err)
}

// IsErrorString IsErrorString
func IsErrorString(err error, errorString string) bool {
	return err != nil && err.Error() == errorString
}
